class Socket {
	constructor(options = {}) {
		this.url = options.url || '';
		this.socketTask = options.socketTask || {};
		this.socketKey = options.socketKey || ''
	}

	start(options) {
		this.url = options.url;
		this.socketKey = options.socketKey;
		if (!this.socketTask) {
			this.socketTask = {};
			this.socketTask[this.socketKey] = null;
		} else if (!this.socketTask.hasOwnProperty(options.socketKey)) {
			this.socketTask[this.socketKey] = null;
		}
	}

	init(callback, obj) {
		if (this.socketTask && this.socketTask.hasOwnProperty(this.socketKey) && this.socketTask[this.socketKey]) {
			this.socketTask[this.socketKey].onMessage((res) => {
				if (typeof callback == 'function') {
					callback(res)
				}
			});

			console.log(123, '===>')
			return
		}
		// #ifdef APP-PLUS
		// uni.createSocketTask({
		this.socketTask[this.socketKey] =uni.connectSocket({
			url: this.url,
			// url: 'ws://124.220.157.145:11132',
			success: () => {
				console.log("正准备建立websocket中...");

				return this.socketTask[this.socketKey]


			},
			fail: (err) => {
				return (false)
			}

		})
		// #endif
		// #ifdef H5
		this.socketTask[this.socketKey] = uni.connectSocket({
			url: this.url,
			// url: 'ws://124.220.157.145:11132',
			success: () => {
				console.log("正准备建立websocket中...");

				return this.socketTask[this.socketKey]


			},
			fail: (err) => {
				return (false)
			}

		});

		// #endif

		if (this.socketTask && this.socketTask[this.socketKey]) {
			this.open(callback, obj)
		}





	}

	open(callback, obj) {
		// 返回实例
		this.socketTask[this.socketKey].onOpen(() => {
			console.log('WebSocket连接已打开');
			// 打开消息
			this.socketTask[this.socketKey].onMessage((res) => {
				var arr = res.data.split('|');
				console.log(arr, '====>arr')
				var type = arr[0];
				// 合约列表
				if (type == 'ISS') {
					var poInfo = JSON.parse(arr[1]);
					console.log(poInfo, '===>成交')
					let data = (uni.getStorageSync('ISS') && JSON.parse(uni.getStorageSync(
						'ISS'))) || [];
					if (data.length == 0) {
						uni.setStorageSync('ISS', JSON.stringify(poInfo))
					} else {
						uni.setStorageSync('ISS', JSON.stringify(poInfo))
						// let index = data.findIndex((item) => item.sys_id == poInfo.sys_id);
						// if (index == -1) {
						// 	data.unshift(poInfo)
						// 	uni.setStorageSync('ISS', JSON.stringify(data))
						// } else {
						// 	data.splice(index, 1);
						// 	data.unshift(poInfo)
						// 	uni.setStorageSync('ISS', JSON.stringify(data))
						// }
					}
				} else if (type == 'I') {
					var poInfo = JSON.parse(arr[1]);
					console.log(poInfo, '===>成交')
					let data = (uni.getStorageSync('I') && JSON.parse(uni.getStorageSync(
						'I'))) || [];
					if (data.length == 0) {
						uni.setStorageSync('I', JSON.stringify([poInfo]))
					} else {
						let index = data.findIndex((item) => item.sys_id == poInfo.sys_id);
						if (index == -1) {
							data.unshift(poInfo)
							uni.setStorageSync('I', JSON.stringify(data))
						} else {
							data.splice(index, 1);
							data.unshift(poInfo)
							uni.setStorageSync('I', JSON.stringify(data))
						}
					}
				}




				if (typeof callback == 'function') {
					callback(res)
				}

			});

			// 发送数据
			this.socketTask[this.socketKey].send({
				data: obj,
				success: () => {
					console.log("发送websocket中...");

				},
				fail: (err) => {

				}

			})

			this.socketTask[this.socketKey].onerror = (event) => {
				console.log('报错监控')
			};

			this.socketTask[this.socketKey].onClose(() => {
				console.log("ws断开了");
			})

			// this.socketTask[this.socketKey].close()

		});

	}



}

export default new Socket()


// uni.connectSocket({
// 	url: 'ws://124.220.157.145:11132',
// 	success: () => {
// 		console.log("正准备建立websocket中...");
// 		// 返回实例
// 		uni.onSocketOpen(function() {
// 			console.log('WebSocket连接已打开');

// 			uni.sendSocketMessage({
// 				data: ('L|' + JSON.stringify(Td)),
// 				success() {
// 					console.log('消息发送成功');
// 				},
// 				fail(err) {
// 					console.error('消息发送失败', err);
// 				}
// 			});

// 		});

// 		uni.onSocketMessage(function(res) {
// 			// console.log('收到消息：', res.data);
// 			var arr = res.data.split('|');
// 			// console.log(arr, '====>arr')
// 			var type = arr[0];
// 			if (arr.Length < 2) {
// 				MsgManager.Instance.SendMsg(_Name + "接收数据错误:" + pData, MsgType.ERROR);
// 				return;
// 			}
// 			if (type == "H") //心跳
// 			{

// 			} else if (type == "L") //登录返回
// 			{
// 				var Td = JSON.parse(arr[1]);
// 				console.log(Td, '===>登录返回')
// 			} else if (type == "LO") //登出返回
// 			{
// 				var Td = JSON.parse(arr[1]);
// 				console.log(Td, '===>退出返回')

// 			} else if (type == "O") //报单
// 			{
// 				var orderInfo = JSON.parse(arr[1]);
// 				console.log(Td, '===>报单')

// 			} else if (type == "C") //撤单回报
// 			{
// 				var orderInfo = JSON.parse(arr[1]);
// 				console.log(Td, '===>撤单回报')


// 			} else if (type == "T") //成交
// 			{
// 				var tradeInfo = JSON.parse(arr[1]);
// 				console.log(Td, '===>成交')

// 			} else if (type == "P") //持仓
// 			{
// 				var poInfo = JSON.parse(arr[1]);
// 				console.log(poInfo, '===>持仓', )

// 				that.$nextTick(() => {
// 					console.log(that.$refs.xx, '=======>xx')
// 					that.$refs.imitate.chooseTableData(poInfo)
// 				})


// 			} else if (type == "PL") //持仓列表
// 			{
// 				Poss = JSON.parse(arr[1]);
// 				console.log(Td, '===>持仓列表')
// 			} else if (type == "M") //权益
// 			{
// 				var amountInfo = JSON.parse(arr[1]);
// 				console.log(amountInfo, '===>权益')
// 			} else if (type == "E") //错误
// 			{
// 				uni.showToast({
// 					title: "服务器返回错误:" + arr[1],
// 					icon: 'error'
// 				})
// 			}

// 		});

// 		uni.onSocketError(function(err) {
// 			console.error('WebSocket错误：', err);
// 		});

// 	}

// });